home *** CD-ROM | disk | FTP | other *** search
/ The Very Best of Atari Inside / The Very Best of Atari Inside 1.iso / sharew / accs / oki_init / okiinit.pas < prev   
Encoding:
Pascal/Delphi Source File  |  1985-07-19  |  15.8 KB  |  449 lines

  1. (**********************************************************)
  2. (**********************************************************)
  3. (********                                          ********)
  4. (********      DRUCKERINITIALISIERUNGSPROGRAMM     ********)
  5. (********                                          ********)
  6. (********     FüR    OKIDATA / MICROLINE    182    ********)
  7. (********                                          ********)
  8. (********         ACCESSORY GESCHRIEBEN VON:       ********)
  9. (********                                          ********)
  10. (********             CARSTEN SCHNEIDER            ********)
  11. (********             JAHNSTR. 5                   ********)
  12. (********             6348 HERBORN 1               ********)
  13. (********                                          ********)
  14. (********     Entwickelt mit ST Pascal + von CCD   ********)
  15. (********                                          ********)
  16. (**********************************************************)
  17. (**********************************************************)
  18.  
  19.  
  20. {$SO,D-}    (* Compilerdirektiven *)
  21.  
  22. program oki_druckereinstellung;
  23. const
  24.    FILENAME = 'OKI.RSC';    (* Name der RSC Datei *)
  25.  
  26.    {$I oki.i}               (* RSC Definitionsdatei fuer Konstanten *)
  27.    {$I gemconst.pas}        (* Konstantendefinitionsdatei für GEM Anwendung *)
  28.                             (* mit ST Pascal + *)
  29. type
  30.  
  31.    {$I gemtype.pas}         (* Typdefinitionsdatei für GEM Anwendung *)
  32.                             (* mit ST Pascal + *)
  33.  
  34. var                         (* Variablendeklarationsteil *)
  35.    menu_id,ap_id:integer;
  36.    alert,our_name:Str255;
  37.    menue:Dialog_Ptr;
  38.    fehler:boolean;
  39.  
  40.  
  41.           (*********** Prozedurdeklarationsteil ***********)
  42.  
  43.    {$I gemsubs.pas}        (* Funktions- und Prozedurdeklaration für GEM *)
  44.                            (* Anwendung mit ST Pascal + *)
  45.  
  46.  
  47. procedure Cprnout(ch:char);    (* GEMDOS Prozedur Zeichen an Drucker *)
  48. gemdos($05);
  49.  
  50.  
  51. function Cprnos:integer;       (* GEMDOS Funktion Druckerstatus erfragen *)
  52. gemdos($11);
  53.  
  54.  
  55. procedure vergleiche(Pushed:integer; menue:Dialog_Ptr; alert:Str255);
  56. label
  57.    10;         (* verarbeitet Tastendruck *)
  58.  
  59. var
  60.    Taste:integer;
  61.  
  62. begin
  63.    if Pushed = INFOEIN     (*  Programminformation ausgeben *)
  64.     then
  65.       begin
  66.          Taste:= Do_Alert(alert,1);                 (* Alertbox zeigen *)
  67.          Set_Mouse(M_POINT_HAND);                   (* Mausform setzen *)
  68.          Obj_SetState(menue,INFOEIN,NORMAL,true);   (* Info T. deselectieren *)
  69.          Obj_SetState(menue,INFOEIN,SHADOWED,true); (* Schattenrand setzen *)
  70.          goto 10
  71.       end;
  72.    if Pushed = ZEILEEIN    (* Seitenlaenge waehlen: 66 Zeilen/Seite *)
  73.     then
  74.       begin
  75.          Obj_SetState(menue,ZEILEEIN,SELECTED,true);   (* Tasten setzen *)
  76.          Obj_SetState(menue,ZEILEAUS,NORMAL,true);
  77.          Cprnout(chr(27));
  78.          Cprnout(chr(67));      (* Drucker Escape Sequenz *)
  79.          Cprnout(chr(72));
  80.          goto 10
  81.       end;
  82.    if Pushed = ZEILEAUS   (* 88 Zeilen/Seite *)
  83.     then
  84.       begin
  85.          Obj_SetState(menue,ZEILEAUS,SELECTED,true);   (* Tasten setzen *)
  86.          Obj_SetState(menue,ZEILEEIN,NORMAL,true);
  87.          Cprnout(chr(27));
  88.          Cprnout(chr(67));      (* Drucker Escape Sequenz *)
  89.          Cprnout(chr(96));
  90.          goto 10
  91.       end;
  92.    if Pushed = CANCEIN    (* Druckpuffer loeschen *)
  93.     then
  94.       begin
  95.          Obj_SetState(menue,CANCEIN,SELECTED,true);    (* Tasten setzen *)
  96.          Obj_SetState(menue,CANCAUS,NORMAL,true);
  97.          Cprnout(chr(24));
  98.          goto 10
  99.       end;
  100.    if Pushed = CANCAUS    (* Dummy *)
  101.     then
  102.       begin
  103.          Obj_SetState(menue,CANCAUS,SELECTED,true);    (* Tasten setzen *)
  104.          Obj_SetState(menue,CANCEIN,NORMAL,true);
  105.          goto 10
  106.       end;
  107.    if Pushed = VORSEIN   (* Einschalten Formular Vorschub *)
  108.     then
  109.       begin
  110.          Obj_SetState(menue,VORSEIN,SELECTED,true);    (* Tasten setzen *)
  111.          Obj_SetState(menue,VORSAUS,NORMAL,true);
  112.          Cprnout(chr(12));
  113.          goto 10
  114.       end;
  115.    if Pushed = VORSAUS   (* Dummy *)
  116.     then
  117.       begin
  118.          Obj_SetState(menue,VORSAUS,SELECTED,true);    (* Tasten setzen *)
  119.          Obj_SetState(menue,VORSEIN,NORMAL,true);
  120.          goto 10
  121.       end;
  122.    if Pushed = SPREIN   (* Einschalten Druck mit Sprung *)
  123.     then
  124.       begin
  125.          Obj_SetState(menue,SPREIN,SELECTED,true);     (* Tasten setzen *)
  126.          Obj_SetState(menue,SPRAUS,NORMAL,true);
  127.          Cprnout(chr(27));
  128.          Cprnout(chr(78));      (* Drucker Escape Sequenz *)
  129.          Cprnout(chr(1));
  130.          goto 10
  131.       end;
  132.    if Pushed = SPRAUS   (* Ausschalten Druck mit Sprung *)
  133.     then
  134.       begin
  135.          Obj_SetState(menue,SPRAUS,SELECTED,true);     (* Tasten setzen *)
  136.          Obj_SetState(menue,SPREIN,NORMAL,true);
  137.          Cprnout(chr(27));
  138.          Cprnout(chr(78));      (* Drucker Escape Sequenz *)
  139.          Cprnout(chr(0));
  140.          goto 10
  141.       end;
  142.    if Pushed = VFETTEIN   (* Einschalten vertikaler Fettdruck *)
  143.     then
  144.       begin
  145.          Obj_SetState(menue,VFETTEIN,SELECTED,true);    (* Tasten setzen *)
  146.          Obj_SetState(menue,VFETTAUS,NORMAL,true);
  147.          Cprnout(chr(27));
  148.          Cprnout(chr(71));      (* Drucker Escape Sequenz *)
  149.          goto 10
  150.       end;
  151.    if Pushed = VFETTAUS   (* Ausschalten vertikaler Fettdruck *)
  152.     then
  153.       begin
  154.          Obj_SetState(menue,VFETTAUS,SELECTED,true);   (* Tasten setzen *)
  155.          Obj_SetState(menue,VFETTEIN,NORMAL,true);
  156.          Cprnout(chr(27));
  157.          Cprnout(chr(72));      (* Drucker Escape Sequenz *)
  158.          goto 10
  159.       end;
  160.    if Pushed = HFETTEIN   (* Einschalten horizontaler Fettdruck *)
  161.     then
  162.       begin
  163.          Obj_SetState(menue,HFETTEIN,SELECTED,true);   (* Tasten setzen *)
  164.          Obj_SetState(menue,HFETTAUS,NORMAL,true);
  165.          Cprnout(chr(27));
  166.          Cprnout(chr(69));      (* Drucker Escape Sequenz *)
  167.          goto 10
  168.       end;
  169.    if Pushed = HFETTAUS   (* Ausschalten horizontaler Fettdruck *)
  170.     then
  171.       begin
  172.          Obj_SetState(menue,HFETTAUS,SELECTED,true);   (* Tasten setzen *)
  173.          Obj_SetState(menue,HFETTEIN,NORMAL,true);
  174.          Cprnout(chr(27));
  175.          Cprnout(chr(70));     (* Drucker Escape Sequenz *)
  176.          goto 10
  177.       end;
  178.    if Pushed = GEDEIN   (* Einschalten gedehnte Schrift *)
  179.     then
  180.       begin
  181.          Obj_SetState(menue,GEDEIN,SELECTED,true);     (* Tasten setzen *)
  182.          Obj_SetState(menue,GEDAUS,NORMAL,true);
  183.          Cprnout(chr(27));
  184.          Cprnout(chr(87));     (* Drucker Escape Sequenz *)
  185.          Cprnout(chr(49));
  186.          goto 10
  187.       end;
  188.    if Pushed = GEDAUS   (* Ausschalten gedehnte Schrift *)
  189.     then
  190.       begin
  191.          Obj_SetState(menue,GEDAUS,SELECTED,true);      (* Tasten setzen *)
  192.          Obj_SetState(menue,GEDEIN,NORMAL,true);
  193.          Cprnout(chr(27));
  194.          Cprnout(chr(87));     (* Drucker Escape Sequenz *)
  195.          Cprnout(chr(48));
  196.          goto 10
  197.       end;
  198.    if Pushed = UNTEIN   (* Einschalten Unterstreichen *)
  199.     then
  200.       begin
  201.          Obj_SetState(menue,UNTEIN,SELECTED,true);      (* Tasten setzen *)
  202.          Obj_SetState(menue,UNTAUS,NORMAL,true);
  203.          Cprnout(chr(27));
  204.          Cprnout(chr(45));     (* Drucker Escape Sequenz *)
  205.          Cprnout(chr(1));
  206.          goto 10
  207.       end;
  208.    if Pushed = UNTAUS   (* Ausschalten Unterstreichen *)
  209.     then
  210.       begin
  211.          Obj_SetState(menue,UNTAUS,SELECTED,true);       (* Tasten setzen *)
  212.          Obj_SetState(menue,UNTEIN,NORMAL,true);
  213.          Cprnout(chr(27));
  214.          Cprnout(chr(45));     (* Drucker Escape Sequenz *)
  215.          Cprnout(chr(0));
  216.          goto 10
  217.       end;
  218.    if Pushed = HOCHEIN    (* Einschalten Hochstellen *)
  219.     then
  220.       begin
  221.          Obj_SetState(menue,HOCHEIN,SELECTED,true);      (* Tasten setzen *)
  222.          Obj_SetState(menue,HOCHAUS,NORMAL,true);
  223.          Cprnout(chr(27));
  224.          Cprnout(chr(83));     (* Drucker Escape Sequenz *)
  225.          Cprnout(chr(0));
  226.          goto 10
  227.       end;
  228.    if Pushed = HOCHAUS    (* Ausschalten Hochstellen *)
  229.     then
  230.       begin
  231.          Obj_SetState(menue,HOCHAUS,SELECTED,true);      (* Tasten setzen *)
  232.          Obj_SetState(menue,HOCHEIN,NORMAL,true);
  233.          Cprnout(chr(27));
  234.          Cprnout(chr(84));     (* Drucker Escape Sequenz *)
  235.          goto 10
  236.       end;
  237.    if Pushed = TIEFEIN   (* Einschalten Tiefstellen *)
  238.     then
  239.       begin
  240.          Obj_SetState(menue,TIEFEIN,SELECTED,true);      (* Tasten setzen *)
  241.          Obj_SetState(menue,TIEFAUS,NORMAL,true);
  242.          Cprnout(chr(27));
  243.          Cprnout(chr(83));     (* Drucker Escape Sequenz *)
  244.          Cprnout(chr(1));
  245.          goto 10
  246.       end;
  247.    if Pushed = TIEFAUS    (* Ausschalten Tiefstellen *)
  248.     then
  249.       begin
  250.          Obj_SetState(menue,TIEFAUS,SELECTED,true);      (* Tasten setzen *)
  251.          Obj_SetState(menue,TIEFEIN,NORMAL,true);
  252.          Cprnout(chr(27));
  253.          Cprnout(chr(84));     (* Drucker Escape Sequenz *)
  254.          goto 10
  255.       end;
  256.    if Pushed = SATZEIN  (* Einschalten Zeichensatz I *)
  257.     then
  258.       begin
  259.          Obj_SetState(menue,SATZEIN,SELECTED,true);      (* Tasten setzen *)
  260.          Obj_SetState(menue,SATZAUS,NORMAL,true);
  261.          Cprnout(chr(27));
  262.          Cprnout(chr(55));     (* Drucker Escape Sequenz *)
  263.          goto 10
  264.       end;
  265.    if Pushed = SATZAUS  (* Einschalten Zeichensatz II *)
  266.     then
  267.       begin
  268.          Obj_SetState(menue,SATZAUS,SELECTED,true);      (* Tasten setzen *)
  269.          OBJ_SetState(menue,SATZEIN,NORMAL,true);
  270.          Cprnout(chr(27));
  271.          Cprnout(chr(54));     (* Drucker Escape Sequenz *)
  272.          goto 10
  273.       end;
  274.    if Pushed = ABSTEIN  (* Einschalten Zeilenabstand 1/6" *)
  275.     then
  276.       begin
  277.          Obj_SetState(menue,ABSTEIN,SELECTED,true);      (* Tasten setzen *)
  278.          Obj_SetState(menue,ABSTAUS,NORMAL,true);
  279.          Cprnout(chr(27));
  280.          Cprnout(chr(50));     (* Drucker Escape Sequenz *)
  281.          goto 10
  282.       end;
  283.    if Pushed = ABSTAUS  (* Einschalten Zeilenabstand 1/8" *)
  284.     then
  285.       begin
  286.          Obj_SetState(menue,ABSTAUS,SELECTED,true);      (* Tasten setzen *)
  287.          Obj_SetState(menue,ABSTEIN,NORMAL,true);
  288.          Cprnout(chr(27));
  289.          Cprnout(chr(48));     (* Drucker Escape Sequenz *)
  290.          goto 10
  291.       end;
  292.    if Pushed = GROEIN   (* Einschalten Großschrift 10 CPI *)
  293.     then
  294.       begin
  295.          Obj_SetState(menue,GROEIN,SELECTED,true);       (* Tasten setzen *)
  296.          Obj_SetState(menue,GROAUS,NORMAL,true);
  297.          Cprnout(chr(18));
  298.          goto 10
  299.       end;
  300.    if Pushed = GROAUS  (* Einschalten mittlere Schrift 12 CPI *)
  301.     then
  302.       begin
  303.          Obj_SetState(menue,GROAUS,SELECTED,true);       (* Tasten setzen *)
  304.          Obj_SetState(menue,GROEIN,NORMAL,true);
  305.          Cprnout(chr(27));
  306.          Cprnout(chr(58));     (* Drucker Escape Sequenz *)
  307.       end;
  308.    10:
  309. end;          (* of procedure vergleiche *)
  310.  
  311.  
  312. procedure normalize;      (* Deselectiert Tasten *)
  313. begin
  314.    Obj_SetState(menue,ZEILEEIN,NORMAL,false);
  315.    Obj_SetState(menue,ZEILEAUS,NORMAL,false);
  316.    Obj_SetState(menue,CANCEIN,NORMAL,false);
  317.    Obj_SetState(menue,CANCAUS,NORMAL,false);
  318.    Obj_SetState(menue,VORSEIN,NORMAL,false);
  319.    Obj_SetState(menue,VORSAUS,NORMAL,false);
  320.    Obj_SetState(menue,SPREIN,NORMAL,false);
  321.    Obj_SetState(menue,SPRAUS,NORMAL,false);
  322.    Obj_SetState(menue,VFETTEIN,NORMAL,false);
  323.    Obj_SetState(menue,VFETTAUS,NORMAL,false);
  324.    Obj_SetState(menue,HFETTEIN,NORMAL,false);
  325.    Obj_SetState(menue,HFETTAUS,NORMAL,false);
  326.    Obj_SetState(menue,GEDEIN,NORMAL,false);
  327.    Obj_SetState(menue,GEDAUS,NORMAL,false);
  328.    Obj_SetState(menue,UNTEIN,NORMAL,false);
  329.    Obj_SetState(menue,UNTAUS,NORMAL,false);
  330.    Obj_SetState(menue,TIEFEIN,NORMAL,false);
  331.    Obj_SetState(menue,TIEFAUS,NORMAL,false);
  332.    Obj_SetState(menue,HOCHEIN,NORMAL,false);
  333.    Obj_SetState(menue,HOCHAUS,NORMAL,false);
  334.    Obj_SetState(menue,SATZEIN,NORMAL,false);
  335.    Obj_SetState(menue,SATZAUS,NORMAL,false);
  336.    Obj_SetState(menue,ABSTEIN,NORMAL,false);
  337.    Obj_SetState(menue,ABSTAUS,NORMAL,false);
  338.    Obj_SetState(menue,GROEIN,NORMAL,false);
  339.    Obj_SetState(menue,GROAUS,NORMAL,false);
  340. end;       (* of procedure normalize *)
  341.  
  342.  
  343. function druckbereit:boolean;
  344. var
  345.   on_line,meldung:integer;    (* Kontrolliert Druckerstatus *)
  346.  
  347. begin
  348.    on_line:= Cprnos;
  349.    meldung:= 0;
  350.    druckbereit:= true;
  351.    while (on_line <> -1) and (meldung <> 2)  do    (* Fehlermeldung *)
  352.     begin
  353.        meldung:= Do_Alert('[3][Drucker ON LINE schalten !][ OK |ABORT]',1);
  354.        on_line:= Cprnos
  355.     end;
  356.    if meldung = 2        (* Accessory abbrechen *)
  357.     then
  358.       druckbereit:= false
  359. end;                        (* of function druckbereit *)
  360.  
  361.  
  362. function ladefehler:boolean;
  363. var
  364.   junk:integer;     (* Kontrolliert Einladen von OKI.RSC *)
  365.  
  366. begin
  367.    ladefehler:= false;
  368.    if not Load_Resource(FILENAME)      (* Fehlermeldung *)
  369.     then
  370.       begin
  371.          junk:= Do_Alert('[3][Wo ist die Datei OKI.RSC ?][ FEHLER ]',1);
  372.          ladefehler:= true
  373.       end
  374. end;          (* of function ladefehler *)
  375.  
  376.  
  377. procedure ausgabe(alert:Str255; menue:Dialog_Ptr; fehler:boolean);
  378. var
  379.   Pushed,Dummy,junk:integer;  (* Gibt den Dialog aus und *)
  380.                               (* verarbeitet Mouseclicks *)
  381.  
  382. begin
  383.    if not fehler   (* Anwendung gegebenenfalls abbrechen *)
  384.     then
  385.       begin
  386.          if druckbereit   (* Druckerstatus abfragen *)
  387.           then
  388.             begin
  389.                Init_Mouse;                        (* Maus initialisieren *)
  390.                Center_Dialog(menue);              (* Dialog zentrieren *)
  391.                Set_Mouse(M_POINT_HAND);           (* Mausform setzen *)
  392.                Pushed:= Do_Dialog(menue,Dummy);   (* Dialog zeigen *)
  393.                repeat                             (* Auswahlschleife *)
  394.                   if Pushed <> ENDE
  395.                    then
  396.                      begin
  397.                         vergleiche(Pushed,menue,alert);       (* Tastendruck *)
  398.                         Pushed:= Redo_Dialog(menue,OKIMENUE)  (* verarbeiten *)
  399.                      end
  400.                until Pushed = ENDE;
  401.                Obj_SetState(menue,ENDE,NORMAL,true); (* Exit deselectieren *)
  402.                End_Dialog(menue);                    (* Dialog beenden *)
  403.                normalize;                     (* Menuetasten deselectieren *)
  404.                Set_Mouse(M_ARROW)             (* Mausform rücksetzen *)
  405.             end
  406.       end
  407.     else
  408.       junk:= Do_Alert('[3][Accessory defekt:|OKI.RSC fehlt !][ OK ]',1)
  409. end;      (* of procedure ausgabe *)
  410.  
  411.  
  412. procedure Event_Loop(alert:Str255; menue:Dialog_Ptr; fehler:boolean);
  413. var
  414.   event,dummy:integer;
  415.   msg:Message_Buffer;
  416.  
  417. begin
  418.    while true do        (* Endlosschleife: Wartet auf Message Events *)
  419.     begin
  420.        event:= Get_Event(E_MESSAGE,
  421.                          0,0,0,0,
  422.                          false,0,0,0,0,
  423.                          false,0,0,0,0,
  424.                          msg,dummy,dummy,
  425.                          dummy,dummy,dummy,dummy);
  426.  
  427.        case msg[0] of    (* Messagebuffer abfragen *)
  428.           AC_Open:
  429.            (* if msg[4] = menu_id then *)   (* Fehler in Menu_Register *)
  430.                ausgabe(alert,menue,fehler);
  431.        end
  432.     end       (* of while *)
  433. end;       (* of procedure Event_Loop *)
  434.  
  435.  
  436. begin                 (***** Hauptprogramm *****)
  437.    ap_id:= Init_Gem;                  (* Applikationsnummer speichern *)
  438.    if ap_id >= 0
  439.     then
  440.       begin
  441.          our_name:= '  Oki_182 Init';
  442.          menu_id:= Menu_Register(ap_id,our_name);    (* Menuepunkt setzen *)
  443.          fehler:= ladefehler;
  444.          Find_Dialog(OKIMENUE,menue);    (* Dialogpointer zuweisen *)
  445.          Find_Alert(INFO,alert);         (* Alertstring zuweisen *)
  446.          Event_Loop(alert,menue,fehler);    (* Warteschleife *)
  447.       end
  448. end.            (* Hauptprorgamm *)
  449.